using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Data; 
using System.Data.SqlClient; 
using System.Data.SqlTypes; 
using SolucionUtiles; 
using SolucionEntidad; 
namespace SolucionDatos 
{ 
   public class PersonaDao 
    { 
        private SqlConnection cn; 
        public PersonaDao(SqlConnection cn) 
        { 
           this.cn = cn; 
        } 
        public void insert(Persona obj)
        { 
           SqlCommand command = new SqlCommand("INSERT INTO persona " + 
           "(idPersona,tipoPersona,fechaRegistro,estado,subTipoPersona,email,telefono,nombres,direccion) VALUES" + 
           "(@idPersona,@tipoPersona,@fechaRegistro,@estado,@subTipoPersona,@email,@telefono,@nombres,@direccion)", this.cn); 

command.Parameters.Add(new SqlParameter("@idPersona", obj.idPersona)); 
command.Parameters.Add(new SqlParameter("@tipoPersona", obj.tipoPersona)); 
command.Parameters.Add(new SqlParameter("@fechaRegistro", obj.fechaRegistro)); 
command.Parameters.Add(new SqlParameter("@estado", obj.estado)); 
command.Parameters.Add(new SqlParameter("@subTipoPersona", obj.subTipoPersona)); 
command.Parameters.Add(new SqlParameter("@email", obj.email)); 
command.Parameters.Add(new SqlParameter("@telefono", obj.telefono)); 
command.Parameters.Add(new SqlParameter("@nombres", obj.nombres)); 
command.Parameters.Add(new SqlParameter("@direccion", obj.direccion)); 
command.ExecuteNonQuery(); 
} 
  		public void update(Persona obj) 
    	{ 
        	SqlCommand command = new SqlCommand("UPDATE Persona " + 
			" SET " + 
"tipoPersona=@tipoPersona" + 
",fechaRegistro=@fechaRegistro" + 
",estado=@estado" + 
",subTipoPersona=@subTipoPersona" + 
",email=@email" + 
",telefono=@telefono" + 
",nombres=@nombres" + 
",direccion=@direccion" + 
 " WHERE " + 
"idPersona=@idPersona" 
,this.cn); 
command.Parameters.Add(new SqlParameter("@idPersona", obj.idPersona)); 
command.Parameters.Add(new SqlParameter("@tipoPersona", obj.tipoPersona)); 
command.Parameters.Add(new SqlParameter("@fechaRegistro", obj.fechaRegistro)); 
command.Parameters.Add(new SqlParameter("@estado", obj.estado)); 
command.Parameters.Add(new SqlParameter("@subTipoPersona", obj.subTipoPersona)); 
command.Parameters.Add(new SqlParameter("@email", obj.email)); 
command.Parameters.Add(new SqlParameter("@telefono", obj.telefono)); 
command.Parameters.Add(new SqlParameter("@nombres", obj.nombres)); 
command.Parameters.Add(new SqlParameter("@direccion", obj.direccion)); 
command.ExecuteNonQuery(); 
} 
       public void delete(Persona obj){ 
SqlCommand command = new SqlCommand("DELETE FROM persona WHERE "  
 +"idPersona=@idPersona" 
, this.cn); 
command.Parameters.Add(new SqlParameter("@idPersona", obj.idPersona)); 
command.ExecuteNonQuery(); 
} 
        public Persona get(Persona obj) 
{ 
   Persona record = null; 
    SqlCommand command = new SqlCommand("SELECT idPersona,tipoPersona,fechaRegistro,estado,subTipoPersona,email,telefono,nombres,direccion FROM persona where " 
 +"idPersona=@idPersona" 
, this.cn); 
command.Parameters.Add(new SqlParameter("@idPersona", obj.idPersona)); 

    SqlDataReader dr = command.ExecuteReader();
dr.Read(); 
record = new Persona(); 
if (dr["idPersona"] == DBNull.Value) { record.idPersona = SqlInt32.Null; } else { record.idPersona = (Int32)dr["idPersona"]; } 
if (dr["tipoPersona"] == DBNull.Value) { record.tipoPersona = SqlInt32.Null; } else { record.tipoPersona = (Int32)dr["tipoPersona"]; } 
if (dr["fechaRegistro"] == DBNull.Value) { record.fechaRegistro = SqlDateTime.Null; } else { record.fechaRegistro = (DateTime)dr["fechaRegistro"]; } 
if (dr["estado"] == DBNull.Value) { record.estado = SqlInt32.Null; } else { record.estado = (Int32)dr["estado"]; } 
if (dr["subTipoPersona"] == DBNull.Value) { record.subTipoPersona = SqlInt32.Null; } else { record.subTipoPersona = (Int32)dr["subTipoPersona"]; } 
if (dr["email"] == DBNull.Value) { record.email = SqlString.Null; } else { record.email = (String)dr["email"]; } 
if (dr["telefono"] == DBNull.Value) { record.telefono = SqlString.Null; } else { record.telefono = (String)dr["telefono"]; } 
if (dr["nombres"] == DBNull.Value) { record.nombres = SqlString.Null; } else { record.nombres = (String)dr["nombres"]; } 
if (dr["direccion"] == DBNull.Value) { record.direccion = SqlString.Null; } else { record.direccion = (String)dr["direccion"]; } 
this.cn.Close(); 
return record; 
} 
     public List<Persona> getList() 
{ 
   List<Persona> list = new List<Persona>(); 
    SqlCommand command = new SqlCommand("SELECT idPersona,tipoPersona,fechaRegistro,estado,subTipoPersona,email,telefono,nombres,direccion FROM persona", this.cn); 
    SqlDataReader dr = command.ExecuteReader(); 
    while (dr.Read()) 
    { 
Persona obj = new Persona(); 
if (dr["idPersona"] == DBNull.Value) { obj.idPersona = SqlInt32.Null; } else { obj.idPersona = (Int32)dr["idPersona"]; } 
if (dr["tipoPersona"] == DBNull.Value) { obj.tipoPersona = SqlInt32.Null; } else { obj.tipoPersona = (Int32)dr["tipoPersona"]; } 
if (dr["fechaRegistro"] == DBNull.Value) { obj.fechaRegistro = SqlDateTime.Null; } else { obj.fechaRegistro = (DateTime)dr["fechaRegistro"]; } 
if (dr["estado"] == DBNull.Value) { obj.estado = SqlInt32.Null; } else { obj.estado = (Int32)dr["estado"]; } 
if (dr["subTipoPersona"] == DBNull.Value) { obj.subTipoPersona = SqlInt32.Null; } else { obj.subTipoPersona = (Int32)dr["subTipoPersona"]; } 
if (dr["email"] == DBNull.Value) { obj.email = SqlString.Null; } else { obj.email = (String)dr["email"]; } 
if (dr["telefono"] == DBNull.Value) { obj.telefono = SqlString.Null; } else { obj.telefono = (String)dr["telefono"]; } 
if (dr["nombres"] == DBNull.Value) { obj.nombres = SqlString.Null; } else { obj.nombres = (String)dr["nombres"]; } 
if (dr["direccion"] == DBNull.Value) { obj.direccion = SqlString.Null; } else { obj.direccion = (String)dr["direccion"]; } 
list.Add(obj); 
} 
return list; 
} 
} 
} 
